Ako ziskat cislo verzie

Otázka od: Köteleš Ján

29. 11. 2002 14:42

Pekny den

Vo vlastnostiach projektu sa da definovat stvorcislie oznacujuce verziu
(major, minor, release, build). Neviete prosim niekto ako vytiahnut tieto
cisla v samotnom programe. Napriklad aby som sa nemusel starat o
aktualizáciu tohoto údaja v dialogu about...

Odpovedá: Petr Vones

29. 11. 2002 14:52

From: "Köteleš Ján" <Koteles@lumen.sk>
> Vo vlastnostiach projektu sa da definovat stvorcislie oznacujuce verziu
> (major, minor, release, build). Neviete prosim niekto ako vytiahnut tieto
> cisla v samotnom programe. Napriklad aby som sa nemusel starat
> o aktualizáciu tohoto údaja v dialogu about...

Pomoci funkce VersionFixedFileInfo nebo tridy TJclFileVersionInfo v JCL:
http://sourceforge.net/project/showfiles.php?group_id=47514&release_id=118195

Petr Vones

Odpovedá: campulka

29. 11. 2002 14:51

Na http://www.campulka.net/?dir=Delphi%20komponenty
si stahni komponentu TVerInfo.


> -----Original Message-----
> Pekny den
>
> Vo vlastnostiach projektu sa da definovat stvorcislie
> oznacujuce verziu
> (major, minor, release, build). Neviete prosim niekto ako
> vytiahnut tieto
> cisla v samotnom programe. Napriklad aby som sa nemusel starat o
> aktualizáciu tohoto údaja v dialogu about...

Odpovedá: Stanislav Kochan

29. 11. 2002 16:02

>Pekny den
>
>Vo vlastnostiach projektu sa da definovat stvorcislie oznacujuce verziu
>(major, minor, release, build). Neviete prosim niekto ako vytiahnut tieto
>cisla v samotnom programe. Napriklad aby som sa nemusel starat o
>aktualizáciu tohoto údaja v dialogu about...


Ja s uspechom pouzivam toto :


{GetProjectVersion ***************************************************
 funkcia vrati aktualnu verziu softwaru
 pr.:Label.caption := GetProjectVersion(application); }

function GetProjectVersion(SendApplication: TApplication):string;
var FileName,tmp: string;
      InfoSize, Wnd: Longword;
      VerBuf: Pointer;
      FI: PVSFixedFileInfo;
      VerSize: Longword;
      v1,v2:integer;
begin
    FileName := ExtractFileName(SendApplication.ExeName);
    InfoSize := GetFileVersionInfoSize(PChar(FileName), Wnd);
    if InfoSize <> 0 then
    begin
        GetMem(VerBuf, InfoSize);
        try
            if GetFileVersionInfo(PChar(FileName), Wnd, InfoSize, VerBuf)
then begin
                if VerQueryValue(VerBuf, '\', Pointer(FI), VerSize) then
begin
                    v1:=FI.dwFileVersionMS;
                    v2:=FI.dwFileVersionLS;
                    tmp:= inttostr(v1 shr 16) + '.' +inttostr(v1 and
$0000FFFF)+'.'+
                          inttostr(v2 shr 16) + ' (build ' +inttostr(v2
and $0000FFFF)+')';
                end;
            end;
        finally
            FreeMem(VerBuf);
        end;
    end;
    result := tmp;
end;

Odpovedá: Jiri Novotny

29. 11. 2002 16:10

> Vo vlastnostiach projektu sa da definovat stvorcislie oznacujuce verziu
> (major, minor, release, build). Neviete prosim niekto ako vytiahnut tieto
> cisla v samotnom programe. Napriklad aby som sa nemusel starat o
> aktualizáciu tohoto údaja v dialogu about...

Ja kdesi pouzivam toto:

procedure TAboutForm.FormShow(Sender: TObject);
var VersionSize, VersionHandle : DWord;
    pVersionInfo : pointer;
    FixedFileInfo : PVSFixedFileInfo;
    ItemLen : UInt;
begin
  VersionSize:=GetFileVersionInfoSize(PChar(Application.ExeName),
                                      VersionHandle);
  if VersionSize>0 then begin
    GetMem(pVersionInfo,VersionSize);
    try
      if GetFileVersionInfo(PChar(Application.ExeName),VersionHandle,
                            VersionSize, pVersionInfo) then
        if VerQueryValue(pVersionInfo, '\',
        Pointer(FixedFileInfo),ItemLen) then
          with FixedFileInfo^ do
           Label2.Caption := Label2.Caption + ' ' +
                             Format('%d.%d.%d.%d',[HiWord(dwFileVersio
                             nMS),
                             LoWord(dwFileVersionMS),HiWord(dwFileVers
                             ionLS), LoWord(dwFileVersionLS)]);
        finally
          FreeMem(pVersionInfo,VersionSize);
        end;
  end;
end;


Jirka.